/*
 * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
 * Licensed under the 【火山方舟】原型应用软件自用许可协议
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at 
 *     https://www.volcengine.com/docs/82379/1433703
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { VsStoryBookPageImage } from "./image";
import { VsStoryBookPageCover } from "./cover";
import { VsStoryBookPageText } from "./text";
import {
  IDataCoverItem,
  IDataItem,
  IDataPageImageItem,
  IDataPageTextItem,
} from "../types";
import { useStoryBookConfig } from "../..";

export function VsStoryBookPage(data: IDataItem) {
  const { slots } = useStoryBookConfig();
  const { cover: Cover, text: Text, image: Image } = slots ?? {};
  if (data.isCover) {
    return Cover ? (
      <Cover data={data} comp={VsStoryBookPageCover} />
    ) : (
      <VsStoryBookPageCover {...((data ?? {}) as IDataCoverItem)} />
    );
  } else if (data.url) {
    return Image ? (
      <Image data={data} comp={VsStoryBookPageImage} />
    ) : (
      <VsStoryBookPageImage {...((data ?? {}) as IDataPageImageItem)} />
    );
  } else if (data.text) {
    return Text ? (
      <Text data={data} comp={VsStoryBookPageText} />
    ) : (
      <VsStoryBookPageText {...((data ?? {}) as IDataPageTextItem)} />
    );
  }
  return <VsStoryBookPageText {...((data ?? {}) as IDataPageTextItem)} />;
}
